#include "SequenceTable.h"
#include <cstdio>
#include <cstdlib>

int main(int argc, char const *argv[])
{
    SqList_static L; //顺序表的名称
    bool ret;        //查看返回值，布尔型是True,或者False
    ElemType del;    //要删除的元素
    //首先手动在顺序表中赋值
    L.data[0] = 1;
    L.data[1] = 2;
    L.data[2] = 3;
    L.length = 3; //总计三个元素
    ret = ListInsert(L, 2, 60);
    if (ret)
    {
        printf("插入成功\n");
        PrintList(L);
    }
    else
    {
        printf("插入失败\n");
    }
    ret = ListDelete(L, 1, del);
    if (ret)
    {
        printf("删除成功\n");
        printf("删除元素值为 %d\n", del);
        PrintList(L);
    }
    else
    {
        printf("删除失败\n");
    }
    ret = LocateElem(L, 60);
    if (ret)
    {
        printf("查找成功\n");
        printf("元素位置为 %d\n", ret);
    }
    else
    {
        printf("查找失败\n");
    }
    system("pause"); //停在控制台窗口
}

// 在位置i处插入元素e

bool ListInsert(SqList_static &L, int i, ElemType e)
{
    if (i < 1 || i > L.length + 1)
    {
        return false;
    }
    if (L.length >= MAXSIZE)
    {
        return false;
    }

    for (int j = L.length; j >= i; j--)
    {
        L.data[j] = L.data[j - 1];
    }

    L.data[i - 1] = e;
    L.length++;

    return true;
}

// 拿出位置i的元素值并删除该元素
bool ListDelete(SqList_static &L, int i, ElemType &e)
{
    if (i < 1 || i > L.length)
    {
        return false;
    }
    e = L.data[i - 1];

    for (int j = i; j < L.length; j++)
    {
        L.data[j - 1] = L.data[j];
    }

    L.length--;

    return true;
}
//查找e元素所在位置，查找成功返回位置，查找失败返回0
int LocateElem(SqList_static &L, ElemType e)
{
    for (int i = 0; i < L.length; i++)
    {
        if (L.data[i] == e)
        {
            return i + 1;
        }
    }

    return 0;
}

//遍历顺序表
void PrintList(SqList_static &L)
{
    for (int i = 0; i < L.length; i++)
    {
        printf("%4d", L.data[i]);
    }

    return;
}